package vue.FenetrePartie;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Quete extends JFrame implements ActionListener{

	private static final long serialVersionUID = 1L;
	
	private Panneau p;
	private JLabel quete1;
	private JLabel quete2;
	private JLabel quete3;
	private JLabel quete4;
	private JLabel fini;
	private JButton boutonAttaquer;
	private MapAdversaire panneauMapAdversaire;
	private MagasinAttaque panneauMagasinAttaque;
	
	/**
	 * 
	 * @param p, c'est le panneau principal qui contient les 4 panneaux de la partie.
	 * 
	 * Ce panneau est un peu différent des autres vu qu'il ne sera pas dans la fenetre principale mais dans une seconde fentre pour être visible 
	 * en même temps que la partie. C'est ce panneau qui va nous donner les informations sur l'état de nos quêtes.
	 */
	public Quete(Panneau p)
	{
		this.p = p;
		this.setTitle("Quetes");
		this.setBounds(150, 50, 300, 400);
		JPanel panQuete = new JPanel();
		panQuete.setLayout(null);
		this.add(panQuete);
		
		this.quete1 = new JLabel("Avoir 5200 Or et Elixir: ");
		this.quete2 = new JLabel("Extracteur Or et Elixir level 3 : ");
		this.quete3 = new JLabel("Extracteur Or et Elixir level 5 : ");
		this.quete4 = new JLabel("Faire une attaque : ");
		this.fini = new JLabel("");
		this.boutonAttaquer = new JButton("Attaquer");

		this.quete1.setBounds(10, 10, 300, 20);
		this.quete2.setBounds(10, 30, 300, 20);
		this.quete3.setBounds(10, 50, 300, 20);
		this.quete4.setBounds(10, 70, 300, 20);
		this.fini.setBounds(10, 100, 300, 20);
		this.boutonAttaquer.setBounds(150, 70, 100, 20);
		
		
		panQuete.add(this.quete1);
		panQuete.add(this.quete2);
		panQuete.add(this.quete3);
		panQuete.add(this.quete4);
		panQuete.add(this.fini);
		panQuete.add(this.boutonAttaquer);
		
		this.boutonAttaquer.setEnabled(false);
		this.boutonAttaquer.addActionListener(this);

		
		this.panneauMapAdversaire = new MapAdversaire(this.p,this);
		this.panneauMagasinAttaque = new MagasinAttaque(this.panneauMapAdversaire, this.p);
		
		this.repaint();

	}
	
	public void rafraichir()
	{
		if(this.p.getControleur().getNumeroQueteActuelle()>=1)
		{
			this.quete1.setText("Avoir 5200 Or et Elixir: Check");
		}	
		if(this.p.getControleur().getNumeroQueteActuelle()>=2)
		{
			this.quete2.setText("Extracteur Or et Elixir level 3 : Check");
		}
		if(this.p.getControleur().getNumeroQueteActuelle()>=3)
		{
			this.quete3.setText("Extracteur Or et Elixir level 5 : Check");
			this.boutonAttaquer.setEnabled(true);
		}
		if(this.p.getControleur().getNumeroQueteActuelle()>=4)
		{
			this.fini.setText("Vous avez fini les quêtes");
			this.boutonAttaquer.setEnabled(false);

		}
		
	
		
		this.panneauMapAdversaire.rafraichir();
		this.panneauMagasinAttaque.rafraichir();
	}
	
	public void init()
	{
		if(this.p.getControleur().EtreEnTrainDAttaquer())
		{
			this.p.getPanneauMap().setVisible(false);
			this.p.getPanneauMagasin().setVisible(false);
			this.p.getPanneauInformationBatiment().deleteMenu();
			this.panneauMapAdversaire.setVisible(true);
			this.panneauMagasinAttaque.setVisible(true);
			this.boutonAttaquer.setText("Retour");

		}
		else
		{
			this.p.getPanneauMap().setVisible(true);
			this.p.getPanneauMagasin().setVisible(true);
			this.p.getPanneauInformationBatiment().creerMenuSelectionBatiment();

			this.panneauMapAdversaire.setVisible(false);
			this.panneauMapAdversaire.init();
			this.panneauMagasinAttaque.setVisible(false);
			this.boutonAttaquer.setText("Attaquer");
		}	
		this.p.rafraichir();
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {

		if(!this.p.getControleur().EtreEnTrainDAttaquer())
		{
			this.p.getControleur().attaquerEnnemi();
			this.p.rafraichir();
			this.p.getPanneauMap().setVisible(false);
			this.p.getPanneauMagasin().setVisible(false);
			this.p.getPanneauInformationBatiment().deleteMenu();
			this.panneauMapAdversaire.setVisible(true);
			this.panneauMagasinAttaque.setVisible(true);
			this.boutonAttaquer.setText("Retour");

		}
		else
		{
			this.p.getControleur().finirAttaqueEnnemi();
			this.p.getPanneauMap().setVisible(true);
			this.p.getPanneauMagasin().setVisible(true);
			this.p.getPanneauInformationBatiment().creerMenuSelectionBatiment();

			this.panneauMapAdversaire.setVisible(false);
			this.panneauMapAdversaire.init();
			this.panneauMagasinAttaque.setVisible(false);
			this.boutonAttaquer.setText("Attaquer");
			
		}	
	}
	
	

}
